package cn.wolfcode.service;

import cn.wolfcode.domain.SeckillProduct;
import cn.wolfcode.domain.SeckillProductVo;

import java.util.List;

/**
 * Created by lanxw
 */
public interface ISeckillProductService {
    /**
     * 查找秒杀商品列表
     * @param time
     * @return
     */
    List<SeckillProductVo> queryByTime(Integer time);

    /**
     * 从缓存获取数据
     * @param time
     * @return
     */
    List<SeckillProductVo> queryByTimeFromCache(Integer time);
    /**
     * 根据秒杀场次和秒杀商品查找秒杀商品的Vo对象
     * @param time
     * @param seckillId
     * @return
     */
    SeckillProductVo find(Integer time, Long seckillId);

    // 根据秒杀商品扣减库存
    boolean decrstockCount(Long seckillId);

    /**
     * 数据回滚
     * @param time
     * @param seckillId
     */
    void syncStockToRedis(Integer time, Long seckillId);

    /**
     * 订单查询，支付成功的正常消费，支付失败的，取消订单并且回滚真是库存和预库存
     * @param orderNo
     */
    void findProductByNo(String orderNo);

    void incrStockCount(Long seckillId);
}
